<html>
	<head>
		<meta charset="utf-8"/>
		<title>BLine</title>
		<link rel="stylesheet" type="text/css" href="../style.css"/>
	</head>
	<body>
		<h1>BLineX</h1>
		<h2>public</h2>
		<table id="public">
			<tr><td align="right">inline </td><td><a href="#BLineX()">BLineX</a>();</td></tr>
			<tr><td align="right">inline </td><td><a href="#BLineX(T, T, T, T, T, T)">BLineX</a>(T bx, T by, T bz, T ex, T ey, T ez);</td></tr>
			<tr><td align="right">inline </td><td><a href="#BLineX(const BVectorX<T>&, const BVectorX<T>&)">BLineX</a>(const BVectorX&ltT&gt& begin, const BVectorX&ltT&gt& end);</td></tr>
			<tr><td align="right">inline </td><td><a href="#BLineX(const BPlaneX<T>&, const BPlaneX<T>&)">BLineX</a>(const BPlaneX&ltT&gt& p1, const BPlaneX&ltT&gt& p2);</td></tr>
			<tr><td align="right">inline </td><td><a href="#BLineX(const BLineX&)">BLineX</a>(const BLineX& other);</td></tr>
			<tr><td align="right">inline void </td><td><a href="#set(T, T, T, T, T, T)">set</a>(T bx, T by, T bz, T ex, T ey, T ez);</td></tr>
			<tr><td align="right">inline void </td><td><a href="#set(const BVectorX<T>&, const BVectorX<T>&)">set</a>(const BVectorX&ltT&gt& begin, const BVectorX&ltT&gt& end);</td></tr>
			<tr><td align="right">inline void </td><td><a href="#set(const BPlaneX<T>&, const BPlaneX<T>&)">set</a>(const BPlaneX&ltT&gt& p1, const BPlaneX&ltT&gt& p2);</td></tr>
			<tr><td align="right">inline void </td><td><a href="#setBegin(T, T, T)">setBegin</a>(T bx, T by, T bz);</td></tr>
			<tr><td align="right">inline void </td><td><a href="#setBegin(const BVectorX<T>&)">setBegin</a>(const BVectorX&ltT&gt& begin);</td></tr>
			<tr><td align="right">inline const BVectorX<T>& </td><td><a href="#begin()">begin</a>() const;</td></tr>
			<tr><td align="right">inline void </td><td><a href="#setEnd(T, T, T)">setEnd</a>(T x, T y, T z);</td></tr>
			<tr><td align="right">inline void </td><td><a href="#setEnd(const BVectorX<T>&)">setEnd</a>(const BVectorX&ltT&gt& end);</td></tr>
			<tr><td align="right">inline const BVectorX<T>& </td><td><a href="#end()">end</a>() const;</td></tr>
			<tr><td align="right">inline void </td><td><a href="#setVector(T, T, T)">setVector</a>(T x, T y, T z);</td></tr>
			<tr><td align="right">inline void </td><td><a href="#setVector(const BVectorX<T>&)">setVector</a>(const BVectorX&ltT&gt& vector);</td></tr>
			<tr><td align="right">inline const BVectorX<T>& </td><td><a href="#vector()">vector</a>() const;</td></tr>
			<tr><td align="right">inline BVectorX<T> </td><td><a href="#center()">center</a>() const;</td></tr>
			<tr><td align="right">inline BVectorX<T> </td><td><a href="#vertex(float)">vertex</a>(float ratio) const;</td></tr>
			<tr><td align="right">inline void </td><td><a href="#setLength(T)">setLength</a>(T length);</td></tr>
			<tr><td align="right">inline T </td><td><a href="#length()">length</a>() const;</td></tr>
			<tr><td align="right">inline BVectorX<T> </td><td><a href="#perpVertex(const BVectorX<T>&)">perpVertex</a>(const BVectorX&ltT&gt& point) const;</td></tr>
			<tr><td align="right">inline BVectorX<T> </td><td><a href="#closestVertex(const BVectorX<T>&,bool)">closestVertex</a>(const BVectorX&ltT&gt& point, bool infinite = true) const;</td></tr>
			<tr><td align="right">inline BVectorX<T> </td><td><a href="#closestVertex(const BLineX<T>&,bool)">closestVertex</a>(const BLineX&ltT&gt& line, bool infinite = true) const;</td></tr>
			<tr><td align="right">inline BVectorX<T> </td><td><a href="#closestVertex(const BPlaneX<T>&,bool)">closestVertex</a>(const BPlaneX&ltT&gt& plane, bool infinite = true) const;</td></tr>
			<tr><td align="right">inline T </td><td><a href="#distance(const BVectorX<T>&)">distance</a>(const BVectorX&ltT&gt& point) const;</td></tr>
			<tr><td align="right">inline T </td><td><a href="#distance(const BLineX<T>&)">distance</a>(const BLineX&ltT&gt& line) const;</td></tr>
			<tr><td align="right">inline T </td><td><a href="#distance(const BTriangleX<T>&)">distance</a>(const BTriangleX&ltT&gt& triangle) const;</td></tr>
			<tr><td align="right">inline T </td><td><a href="#distance(const BPlaneX<T>&)">distance</a>(const BPlaneX&ltT&gt& plane) const;</td></tr>
			<tr><td align="right">inline bool </td><td><a href="#intersect(const BVectorX<T>&, const BVectorX<T>&, const BVectorX<T>&)">intersect</a>(const BVectorX&ltT&gt& a, const BVectorX&ltT&gt& b, const BVectorX&ltT&gt& c) const;</td></tr>
			<tr><td align="right">inline bool </td><td><a href="#intersect(const BVectorX<T>&, const BVectorX<T>&, const BVectorX<T>&, T&)">intersect</a>(const BVectorX&ltT&gt& a, const BVectorX&ltT&gt& b, const BVectorX&ltT&gt& c, T& ratio) const;</td></tr>
			<tr><td align="right">inline bool </td><td><a href="#intersect(const BVectorX<T>&, const BVectorX<T>&, const BVectorX<T>&, BVectorX<T>&)">intersect</a>(const BVectorX&ltT&gt& a, const BVectorX&ltT&gt& b, const BVectorX&ltT&gt& c, BVectorX&ltT&gt& point) const;</td></tr>
			<tr><td align="right">inline bool </td><td><a href="#intersect(const BTriangleX<T>&)">intersect</a>(const BTriangleX&ltT&gt& triangle) const;</td></tr>
			<tr><td align="right">inline bool </td><td><a href="#intersect(const BTriangleX<T>&, T&)">intersect</a>(const BTriangleX&ltT&gt& triangle, T& ratio) const;</td></tr>
			<tr><td align="right">inline bool </td><td><a href="#intersect(const BTriangleX<T>&, BVectorX<T>&)">intersect</a>(const BTriangleX&ltT&gt& triangle, BVectorX&ltT&gt& point) const;</td></tr>
			<tr><td align="right">inline bool </td><td><a href="#intersect(const BVectorX<T>&, const BVectorX<T>&, const BVectorX<T>&, const BVectorX<T>&)">intersect</a>(const BVectorX&ltT&gt& a, const BVectorX&ltT&gt& b, const BVectorX&ltT&gt& c, const BVectorX&ltT&gt& d) const;</td></tr>
			<tr><td align="right">inline bool </td><td><a href="#intersect(const BVectorX<T>&, const BVectorX<T>&, const BVectorX<T>&, const BVectorX<T>&, T&)">intersect</a>(const BVectorX&ltT&gt& a, const BVectorX&ltT&gt& b, const BVectorX&ltT&gt& c, const BVectorX&ltT&gt& d, T& ratio) const;</td></tr>
			<tr><td align="right">inline bool </td><td><a href="#intersect(const BVectorX<T>&, const BVectorX<T>&, const BVectorX<T>&, const BVectorX<T>&, BVectorX<T>&)">intersect</a>(const BVectorX&ltT&gt& a, const BVectorX&ltT&gt& b, const BVectorX&ltT&gt& c, const BVectorX&ltT&gt& d, BVectorX&ltT&gt& point) const;</td></tr>
			<tr><td align="right">inline bool </td><td><a href="#intersect(const BQuadX<T>&)">intersect</a>(const BQuadX&ltT&gt& quad) const;</td></tr>
			<tr><td align="right">inline bool </td><td><a href="#intersect(const BQuadX<T>&, T&)">intersect</a>(const BQuadX&ltT&gt& quad, T& ratio) const;</td></tr>
			<tr><td align="right">inline bool </td><td><a href="#intersect(const BQuadX<T>&, BVectorX<T>&)">intersect</a>(const BQuadX&ltT&gt& quad, BVectorX&ltT&gt& point) const;</td></tr>
			<tr><td align="right">inline bool </td><td><a href="#intersect(const BPlaneX<T>&)">intersect</a>(const BPlaneX&ltT&gt& plane) const;</td></tr>
			<tr><td align="right">inline bool </td><td><a href="#intersect(const BPlaneX<T>&, T&)">intersect</a>(const BPlaneX&ltT&gt& plane, T& ratio) const;</td></tr>
			<tr><td align="right">inline bool </td><td><a href="#intersect(const BPlaneX<T>&, BVectorX<T>&)">intersect</a>(const BPlaneX&ltT&gt& plane, BVectorX&ltT&gt& point) const;</td></tr>
			<tr><td align="right">inline bool </td><td><a href="#intersect(const BBox&)">intersect</a>(const BBox& box) const;</td></tr>
			<tr><td align="right">inline BLineX& </td><td><a href="#operator = (const BLineX&)">operator = </a>(const BLineX& other);</td></tr>
			<tr><td align="right">inline bool </td><td><a href="#operator == (const BLineX&)">operator == </a>(const BLineX& other) const;</td></tr>
			<tr><td align="right">inline bool </td><td><a href="#operator != (const BLineX&)">operator != </a>(const BLineX& other) const;</td></tr>
			<tr><td align="right">inline BLineX </td><td><a href="#operator * (const BMatrixX<T>&)">operator * </a>(const BMatrixX&ltT&gt& matrix) const;</td></tr>
			<tr><td align="right">inline void </td><td><a href="#operator *= (const BMatrixX<T>&)">operator *= </a>(const BMatrixX&ltT&gt& matrix);</td></tr>
			<tr><td align="right">inline void </td><td><a href="#operator += (const BVectorX<T>&)">operator += </a>(const BVectorX&ltT&gt& offset);</td></tr>
			<tr><td align="right">inline BLineX </td><td><a href="#operator + (const BVectorX<T>&)">operator + </a>(const BVectorX&ltT&gt& offset) const;</td></tr>
		</table>
		<div id="desc">
			<h2>Detailed Description : </h2>
			<p>  The BLine class provides a three-dimensional vector using float precision.</p>
			<p>  A BLine describes a finite length line (or a line segment) on a three-dimensional space. The begub and end points of the line are specified using float vector. Use the BLine2 constructor to retrieve a integer point copy.</p>
			<p>  A BLine provides a lot of methods to test intersection to plane, triangle, quad and box.</p>
		</div>
		<h2 id="docs">Member Documentation</h2>
		<div id="BLineX()">
			<h3>inline BLineX();</h3>
		</div>
		<div id="BLineX(T, T, T, T, T, T)">
			<h3>inline BLineX(T bx, T by, T bz, T ex, T ey, T ez);</h3>
			<p>Constructs a line with begin vertex and end vertex.</p>
		</div>
		<div id="BLineX(const BVectorX<T>&, const BVectorX<T>&)">
			<h3>inline BLineX(const BVectorX&ltT&gt& begin, const BVectorX&ltT&gt& end);</h3>
			<p>Constructs a line with begin vertex and end vertex.</p>
		</div>
		<div id="BLineX(const BPlaneX<T>&, const BPlaneX<T>&)">
			<h3>inline BLineX(const BPlaneX&ltT&gt& p1, const BPlaneX&ltT&gt& p2);</h3>
			<p>Constructs a line by two plane intersection.</p>
		</div>
		<div id="BLineX(const BLineX&)">
			<h3>inline BLineX(const BLineX& other);</h3>
			<p>Copy another line.</p>
		</div>
		<div id="set(T, T, T, T, T, T)">
			<h3>inline void set(T bx, T by, T bz, T ex, T ey, T ez);</h3>
			<p>Set begin vertex and end vertex.</p>
		</div>
		<div id="set(const BVectorX<T>&, const BVectorX<T>&)">
			<h3>inline void set(const BVectorX&ltT&gt& begin, const BVectorX&ltT&gt& end);</h3>
			<p>Set begin vertex and end vertex.</p>
		</div>
		<div id="set(const BPlaneX<T>&, const BPlaneX<T>&)">
			<h3>inline void set(const BPlaneX&ltT&gt& p1, const BPlaneX&ltT&gt& p2);</h3>
			<p>Reset line to two plane intersection.</p>
		</div>
		<div id="setBegin(T, T, T)">
			<h3>inline void setBegin(T bx, T by, T bz);</h3>
			<p>Set begin vertex of line.</p>
		</div>
		<div id="setBegin(const BVectorX<T>&)">
			<h3>inline void setBegin(const BVectorX&ltT&gt& begin);</h3>
			<p>Set begin vertex of line.</p>
		</div>
		<div id="begin()">
			<h3>inline const BVectorX<T>& begin() const;</h3>
			<p>Get begin vertex of line.</p>
		</div>
		<div id="setEnd(T, T, T)">
			<h3>inline void setEnd(T x, T y, T z);</h3>
			<p>Set end vertex of line.</p>
		</div>
		<div id="setEnd(const BVectorX<T>&)">
			<h3>inline void setEnd(const BVectorX&ltT&gt& end);</h3>
			<p>Set end vertex of line.</p>
		</div>
		<div id="end()">
			<h3>inline const BVectorX<T>& end() const;</h3>
			<p>Get end vertex of line.</p>
		</div>
		<div id="setVector(T, T, T)">
			<h3>inline void setVector(T x, T y, T z);</h3>
			<p>Set vector of line, the vector is end - begin, the end will be refreshed to begin + vector.</p>
		</div>
		<div id="setVector(const BVectorX<T>&)">
			<h3>inline void setVector(const BVectorX&ltT&gt& vector);</h3>
			<p>Set vector of line, the vector is end - begin, the end will be refreshed to begin + vector.</p>
		</div>
		<div id="vector()">
			<h3>inline const BVectorX<T>& vector() const;</h3>
			<p>Get vector of line.</p>
		</div>
		<div id="center()">
			<h3>inline BVectorX<T> center() const;</h3>
			<p>Get center vertex of line.</p>
		</div>
		<div id="vertex(float)">
			<h3>inline BVectorX<T> vertex(float ratio) const;</h3>
			<p>Get vertex at ratio position of line.</p>
		</div>
		<div id="setLength(T)">
			<h3>inline void setLength(T length);</h3>
			<p>Reset line's length, means end vertex will change to begin + vec * length.</p>
		</div>
		<div id="length()">
			<h3>inline T length() const;</h3>
			<p>Get length of line, this is fast because the length is pre-calculated.</p>
		</div>
		<div id="perpVertex(const BVectorX<T>&)">
			<h3>inline BVectorX<T> perpVertex(const BVectorX&ltT&gt& point) const;</h3>
			<p>Caculate the prep vertex from the point.</p>
		</div>
		<div id="closestVertex(const BVectorX<T>&,bool)">
			<h3>inline BVectorX<T> closestVertex(const BVectorX&ltT&gt& point, bool infinite = true) const;</h3>
		</div>
		<div id="closestVertex(const BLineX<T>&,bool)">
			<h3>inline BVectorX<T> closestVertex(const BLineX&ltT&gt& line, bool infinite = true) const;</h3>
		</div>
		<div id="closestVertex(const BPlaneX<T>&,bool)">
			<h3>inline BVectorX<T> closestVertex(const BPlaneX&ltT&gt& plane, bool infinite = true) const;</h3>
		</div>
		<div id="distance(const BVectorX<T>&)">
			<h3>inline T distance(const BVectorX&ltT&gt& point) const;</h3>
		</div>
		<div id="distance(const BLineX<T>&)">
			<h3>inline T distance(const BLineX&ltT&gt& line) const;</h3>
		</div>
		<div id="distance(const BTriangleX<T>&)">
			<h3>inline T distance(const BTriangleX&ltT&gt& triangle) const;</h3>
		</div>
		<div id="distance(const BPlaneX<T>&)">
			<h3>inline T distance(const BPlaneX&ltT&gt& plane) const;</h3>
		</div>
		<div id="intersect(const BVectorX<T>&, const BVectorX<T>&, const BVectorX<T>&)">
			<h3>inline bool intersect(const BVectorX&ltT&gt& a, const BVectorX&ltT&gt& b, const BVectorX&ltT&gt& c) const;</h3>
		</div>
		<div id="intersect(const BVectorX<T>&, const BVectorX<T>&, const BVectorX<T>&, T&)">
			<h3>inline bool intersect(const BVectorX&ltT&gt& a, const BVectorX&ltT&gt& b, const BVectorX&ltT&gt& c, T& ratio) const;</h3>
		</div>
		<div id="intersect(const BVectorX<T>&, const BVectorX<T>&, const BVectorX<T>&, BVectorX<T>&)">
			<h3>inline bool intersect(const BVectorX&ltT&gt& a, const BVectorX&ltT&gt& b, const BVectorX&ltT&gt& c, BVectorX&ltT&gt& point) const;</h3>
		</div>
		<div id="intersect(const BTriangleX<T>&)">
			<h3>inline bool intersect(const BTriangleX&ltT&gt& triangle) const;</h3>
		</div>
		<div id="intersect(const BTriangleX<T>&, T&)">
			<h3>inline bool intersect(const BTriangleX&ltT&gt& triangle, T& ratio) const;</h3>
		</div>
		<div id="intersect(const BTriangleX<T>&, BVectorX<T>&)">
			<h3>inline bool intersect(const BTriangleX&ltT&gt& triangle, BVectorX&ltT&gt& point) const;</h3>
		</div>
		<div id="intersect(const BVectorX<T>&, const BVectorX<T>&, const BVectorX<T>&, const BVectorX<T>&)">
			<h3>inline bool intersect(const BVectorX&ltT&gt& a, const BVectorX&ltT&gt& b, const BVectorX&ltT&gt& c, const BVectorX&ltT&gt& d) const;</h3>
		</div>
		<div id="intersect(const BVectorX<T>&, const BVectorX<T>&, const BVectorX<T>&, const BVectorX<T>&, T&)">
			<h3>inline bool intersect(const BVectorX&ltT&gt& a, const BVectorX&ltT&gt& b, const BVectorX&ltT&gt& c, const BVectorX&ltT&gt& d, T& ratio) const;</h3>
		</div>
		<div id="intersect(const BVectorX<T>&, const BVectorX<T>&, const BVectorX<T>&, const BVectorX<T>&, BVectorX<T>&)">
			<h3>inline bool intersect(const BVectorX&ltT&gt& a, const BVectorX&ltT&gt& b, const BVectorX&ltT&gt& c, const BVectorX&ltT&gt& d, BVectorX&ltT&gt& point) const;</h3>
		</div>
		<div id="intersect(const BQuadX<T>&)">
			<h3>inline bool intersect(const BQuadX&ltT&gt& quad) const;</h3>
		</div>
		<div id="intersect(const BQuadX<T>&, T&)">
			<h3>inline bool intersect(const BQuadX&ltT&gt& quad, T& ratio) const;</h3>
		</div>
		<div id="intersect(const BQuadX<T>&, BVectorX<T>&)">
			<h3>inline bool intersect(const BQuadX&ltT&gt& quad, BVectorX&ltT&gt& point) const;</h3>
		</div>
		<div id="intersect(const BPlaneX<T>&)">
			<h3>inline bool intersect(const BPlaneX&ltT&gt& plane) const;</h3>
		</div>
		<div id="intersect(const BPlaneX<T>&, T&)">
			<h3>inline bool intersect(const BPlaneX&ltT&gt& plane, T& ratio) const;</h3>
		</div>
		<div id="intersect(const BPlaneX<T>&, BVectorX<T>&)">
			<h3>inline bool intersect(const BPlaneX&ltT&gt& plane, BVectorX&ltT&gt& point) const;</h3>
		</div>
		<div id="intersect(const BBox&)">
			<h3>inline bool intersect(const BBox& box) const;</h3>
		</div>
		<div id="operator = (const BLineX&)">
			<h3>inline BLineX& operator = (const BLineX& other);</h3>
		</div>
		<div id="operator == (const BLineX&)">
			<h3>inline bool operator == (const BLineX& other) const;</h3>
		</div>
		<div id="operator != (const BLineX&)">
			<h3>inline bool operator != (const BLineX& other) const;</h3>
		</div>
		<div id="operator * (const BMatrixX<T>&)">
			<h3>inline BLineX operator * (const BMatrixX&ltT&gt& matrix) const;</h3>
		</div>
		<div id="operator *= (const BMatrixX<T>&)">
			<h3>inline void operator *= (const BMatrixX&ltT&gt& matrix);</h3>
		</div>
		<div id="operator += (const BVectorX<T>&)">
			<h3>inline void operator += (const BVectorX&ltT&gt& offset);</h3>
		</div>
		<div id="operator + (const BVectorX<T>&)">
			<h3>inline BLineX operator + (const BVectorX&ltT&gt& offset) const;</h3>
		</div>
	</body>
</html>